package com.siashan.toolkit.spring;

import org.springframework.core.env.AbstractEnvironment;
import org.springframework.core.env.Environment;

/**
 * 判断当前软件运行环境工具类
 *
 * @author siashan
 * @since v1.0.4
 **/
public class EnvUtil {

    /**
     * 默认开发环境
     */
    private static final String DEFAULT_PROFILE_DEV = "dev";
    /**
     * 默认测试环境
     */
    private static final String DEFAULT_PROFILE_TEST = "dev";
    /**
     * 默认生产环境
     */
    private static final String DEFAULT_PROFILE_PROD = "prod";

    private static Environment env;

    static {
        env = SpringUtil.getBean(AbstractEnvironment.class);
    }

    /**
     * 判断当前环境是否是开发环境
     *
     * @return 是否是开发环境
     */
    public static boolean isDev() {
        return isCheckedEnv(DEFAULT_PROFILE_DEV);
    }


    /**
     * 判断当前环境是否是生产环境
     *
     * @return 是否是生产环境
     */
    public static boolean isProd() {
        return isCheckedEnv(DEFAULT_PROFILE_PROD);
    }

    /**
     * 判断当前环境是否是测试环境
     *
     * @return 是否是测试环境
     */
    public static boolean isTest() {
        return isCheckedEnv(DEFAULT_PROFILE_TEST);
    }

    /**
     * 判断是否是指定的环境
     *
     * @param active 环境名称
     * @return 是否指定环境
     */
    public static boolean isCheckedEnv(String active) {
        return active.equals(env.getProperty("spring.profiles.active"));
    }
}
